<style type="text/css">
    .hr-trainningBatch-margin-left {
        margin-left: 10px
    }
</style>
<div class="layui-fluid layui-anim febs-anim" id="hr-trainningBatch" lay-title="培训批次信息">
    <div class="layui-row febs-container">
        <div class="layui-col-md12">
            <div class="layui-card">
                <div class="layui-card-body febs-table-full">
                    <form class="layui-form layui-table-form" lay-filter="hr-trainningBatch-table-form">
                        <fieldset class="layui-elem-field layui-field-title" style="margin-top: 10px;">
                            <legend style="font-size: 15px; font-weight: bolder;">批量查询</legend>
                        </fieldset>
                        <div class="layui-row">
                            <div class="layui-col-md11">
                                <div class="layui-form-item">
                                    <div class="layui-inline">
                                        <label class="layui-form-label layui-form-label-sm">批次名称:</label>
                                        <div class="layui-input-inline">
                                            <input type="text" name="trainningName" autocomplete="off" class="layui-input"
                                                   placeholder="" minlength="0" maxlength="20">
                                        </div>
                                    </div>
                                </div>
                            </div>

                            <div class="layui-col-md1 layui-col-sm12 layui-col-xs12 table-action-area">
                                <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain
                                            table-action" id="hr-trainningBatch-query-btn">
                                    <i class="layui-icon">&#xe848;</i>
                                </div>
                                <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain
                                            table-action" id="hr-trainningBatch-reset-btn">
                                    <i class="layui-icon">&#xe79b;</i>
                                </div>
                            </div>
                        </div>
                    </form>

                    <table lay-filter="hr-trainningBatch-table"
                           lay-data="{id: 'hr-trainningBatch-table'}"></table>
                </div>
            </div>
        </div>
    </div>
</div>

<script type="text/html" id="hr-trainningBatch-toolbar">
    <div class="layui-row">
        <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain
                                            table-action" id="hr-trainningBatch-add-btn">
            <i class="layui-icon layui-icon-plus-circle"></i>新增
        </button>
        <button class="layui-btn  layui-btn-sm layui-btn-primary febs-button-green-plain"
                id="hr-trainningBatch-export-btn">
            <i class="layui-icon">&#xe7a8;</i>导出
        </button>
    </div>
</script>

<script type="text/html" id="hr-trainningBatch-option">
    <a lay-event="detail"><span class="febs-blue hr-trainningBatch-margin-left" title="详情" style="">详情</span></a>
    {{#
        if(d.trainningStatusId == 0){
    }}
            <a lay-event="edit"><span class="febs-blue hr-trainningBatch-margin-left" title="编辑">编辑</span></a>
            <a lay-event="del"><span class="febs-blue hr-trainningBatch-margin-left" title="删除">删除</span></a>
            <a lay-event="finalization"><span class="febs-blue hr-trainningBatch-margin-left" title="定稿">定稿</span></a>
            <a lay-event="draft"><span class="febs-blue hr-trainningBatch-margin-left" title="草稿">草稿</span></a>
    {{#
        }
    }}
    {{#
        if(d.trainningStatusId == 1){
    }}
            <a lay-event="plan"><span class="febs-blue hr-trainningBatch-margin-left" title="计划">计划</span></a>
    {{#
        }
    }}
</script>

<!-- 此项配合初始化表格中列的templet属性使用-->
<script type="text/html" id="trainningBatch-status">
    {{#
    let status = {
    1: {title: '定稿'},
    0: {title: '草稿', color: 'red'}
    }[d.trainningStatusId];
    }}
    <span style="color: {{status.color}}">{{ status.title }}</span>
</script>

<script data-th-inline="none" type="text/javascript">
    layui.use(['dropdown', 'jquery', 'form','util', 'table', 'febs'], function () {
        let $ = layui.jquery,
            util = layui.util,
            febs = layui.febs,
            form = layui.form,
            table = layui.table,
            // 定义页面视图
            $view = $('#hr-trainningBatch'),
            // 定义查询按钮
            $query = $view.find('#hr-trainningBatch-query-btn'),
            // 定义重置按钮
            $reset = $view.find('#hr-trainningBatch-reset-btn'),
            // 定义form表单
            $searchForm = $view.find('form'),
            // 定义表格排序
            sortObject = {field: 'trainningName', type: null},
            tableIns;

        // 表单渲染
        form.render();

        // 调用列表初始化方法
        initTable();

        // trainningBatchTable为上方table的ID属性，本方法用于执行列表右侧操作栏的具体实现
        table.on('tool(hr-trainningBatch-table)', function (obj) {

            let data = obj.data,
                layEvent = obj.event;

            // detail为上方配置列表右侧操作栏的lay-event属性
            if (layEvent === 'detail') {
                // 打开一个模态窗体，并指定窗体的大小
                febs.modal.view('批次信息', 'trainningBatch/detail/' + data.id, {
                    // 页面窗口小于750px时弹框页长度占比95%否则宽度为660px
                    area: $(window).width() <= 750 ? '95%' : '660px',
                    resize:false,
                });
            }

            // detail为上方配置列表右侧操作栏的lay-event属性
            if (layEvent === 'del') {
                febs.modal.confirm('删除', '确定删除该批次草稿？', function () {
                    // 调用删除方法
                    deleteStaffLabels(data.id);
                });
            }

            // detail为上方配置列表右侧操作栏的lay-event属性
            if (layEvent === 'edit') {
                // 打开一个带有按钮的模态窗体，按钮顺序依次是，yes,btn2,btn3...
                febs.modal.open('修改', 'trainningBatch/update/' + data.id, {
                    area: $(window).width() <= 750 ? '90%' : '50%',
                    btn: ['提交', '取消'],
                    resize: false,
                    // 对应提交按钮
                    yes: function (index, layero) {
                        // 激发模态窗体的提交按钮事件
                        $('#hr-trainningBatch-update').find('#hr-trainningBatch-update-submit-btn').trigger('click');
                    },
                    // 对应取消按钮
                    btn2: function () {
                        // 关闭所有模态窗口
                        layer.closeAll();
                    }
                });
            }

            // finalization为上方配置列表右侧操作栏的lay-event属性
            if(layEvent == 'finalization'){
                febs.modal.confirm('定稿', '确定要将批次下的草稿计划转为正式计划吗？', function () {
                    draftToExecte(data.id);
                });
            }

            if(layEvent == 'draft'){
                // 打开一个模态窗体，并指定窗体的大小
                febs.modal.view('编辑试题', '/examineSimple/examineSimpleAddOrUpdate', {
                    // 页面窗口小于750px时弹框页长度占比95%否则宽度为660px
                    area: [$(window).width() <= 750 ? '95%' : '80%',$(window).height() <= 750 ? '95%' : '100%'],
                    resize:false,
                });
            }
        });

        // 查询按钮点击事件
        $query.on('click', function () {
            // 获得页面检索条件
            let params = $.extend(getQueryParams(true), {field: sortObject.field, order: sortObject.type});
            // 重新加载列表
            tableIns.reload({where: params, page: {curr: 1}});
        });

        // 新增按钮点击事件
        $view.on('click', '#hr-trainningBatch-add-btn', function () {
            // 打开新增模态窗体
            febs.modal.open('新增', 'trainningBatch/add', {
                // 模态窗体显示按钮（模态窗体显示的按钮是此处定义的按钮，具体模态窗体中定义的按钮为隐藏按钮，为了绑定在模态窗体需要执行的事件）
                btn: ['提交', '重置'],
                area: $(window).width() <= 750 ? '95%' : '50%',
                // 点击模态窗体的提交按钮，优先执行父窗体的此处代码。
                yes: function (index, layero) {
                    // 获得模态窗体的相关信息
                    let trainningName = $('#hr-trainningBatch-add').find('#hr-trainningBatch-add-name').val();
                    console.log(trainningName);
                    // 异步查询是否重名
                    $.ajax({
                        type:'get',
                        url:'trainningBatch/isRepetitive',
                        data:{"trainningName":trainningName},
                        success:function(res){
                            console.log(res);
                            if(res){
                                // 如果没有重名，激发模态窗体的提交按钮（模态窗体的按钮是隐藏的只是为了绑定事件）
                                // 执行模态窗体的点击事件代码
                                $('#hr-trainningBatch-add').find('#hr-trainningBatch-add-submit-btn').trigger('click');
                            }else{
                                // 显示错误信息
                                febs.alert.error("输入的名称或简称重复，请检查");
                            }
                        }
                    })
                },
                // 激发模态窗体重置按钮事件
                btn2: function () {
                    $('#hr-trainningBatch-add').find('#hr-trainningBatch-add-reset-btn').trigger('click');
                    return false;
                }
            });
        })

        // 在个位数的时间前加0
        function formatZero(n){
            if(n >= 0 && n <= 9){
                return "0"+n;
            }else{
                return n;
            }
        }

        // 导出按钮点击事件
        $view.on('click', '#hr-trainningBatch-export-btn', function () {
            // 获得页面条件信息
            let params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type});
            //拼接时间
            let add = '';
            let t = new Date();
            let year = t.getFullYear();
            let month = t.getMonth() + 1;
            let day = t.getDate();
            let hours = t.getHours();
            let minutes = t.getMinutes();
            let seconds = t.getSeconds();
            // 定义导出文件名事件信息
            add = year + formatZero(month) + formatZero(day) + "_" + formatZero(hours) +
                formatZero(minutes) + formatZero(seconds) + ".xlsx";
            // 访问导出相关路由方法，注意在相关实体类中配置@ExcelField属性。
            febs.download(ctx + 'trainningBatch/excel', params, '批次信息' + add);
        })

        // 重置按钮点击事件
        $reset.on('click', function () {
            // 清空表单信息
            $searchForm[0].reset();
            sortObject.type = 'null';
            // 重新加载表格数据
            tableIns.reload({where: getQueryParams(true), page: {curr: 1}, initSort: sortObject});
        });

        // 初始化数据表格
        function initTable() {
            tableIns = febs.table.init({
                // 当前视图的table
                elem: $view.find('table'),
                // 列表ID
                id: 'hr-trainningBatch-table',
                // 访问路由
                url: ctx + 'trainningBatch/list',
                // 配置列表顶部工具栏
                toolbar: '#hr-trainningBatch-toolbar',
                // 配置列表顶部右侧显示列过滤项
                defaultToolbar: ['filter'],
                // 表格渲染完毕后的回调
                done: function (res, curr, count) {
                    // 调整表格在页面占比
                    $("table").css("width", "100%");
                },
                width: "100%",
                // field属性为返回实体类中相关属性名，title为表格列头显示内容，minWidth为表格列最小宽度，maxWidth为表格列最大宽度
                cols: [[
                    {field: 'trainningName', title: '批次名称', minWidth: 190},
                    {field: 'userName', title: '创建用户', minWidth: 130},
                    {field: 'createDate', title: '创建日期', minWidth: 170},
                    {title: '状态', templet: '#trainningBatch-status', width: 80},
                    {field: 'updateUserName', title: '修改用户', minWidth: 130},
                    {field: 'lastModifyDate', title: '最后修改日期', minWidth: 170},
                    // 设置列表右侧操作栏trainningBatch-option为上方所配置工具栏ID
                    {title: '操作', minWidth: 250, toolbar: '#hr-trainningBatch-option'}

                ]]
            });
        }

        // 获得form表单中查询条件并格式化为JSON格式
        function getQueryParams(flag) {
            let params = $searchForm.serializeJson();
            return params;
        }

        // 右侧工具栏删除按钮所调用的方法
        function deleteStaffLabels(trainningBatchIds) {
            febs.get(ctx + 'trainningBatch/delete/' + trainningBatchIds, null, function () {
                // 提示成功信息
                febs.alert.success('删除批次成功');
                // 点击查询按钮
                $query.click();
            });
        }

        // 右侧工具栏删除按钮所调用的方法
        function draftToExecte(trainningBatchIds) {
            febs.get(ctx + 'trainningBatch/draftToExecte/' + trainningBatchIds, null, function () {
                // 提示成功信息
                febs.alert.success('草稿确认定稿成功');
                // 点击查询按钮
                $query.click();
            });
        }

        //按回车搜索
        $(".layui-input").keyup(function (e) {
            //当按下按键时
            //.which属性判断按下的是哪个键，回车键的键位序号为13
            if (e.which == 13) {
                $query.click();
            }
        });
    })
</script>